#include<stdio.h>
#include <unistd.h>
int main()
{
  //僵尸进程的概念：该进程应该已经执行完毕，或者是要终止了，但是该进程的父进程没有主动回收子进程的信息，故子进程无法结束掉。一直存在内存中，资源被占用，内存泄露
  //模拟僵尸进程
  //ps 一直监测指令
  // while :; do ps ajx | head -1 && ps axj | grep mycode | grep -v grep; sleep 1;done
  
 //  pid_t pid;
 //  pid=fork();
 //  if(pid==0)
 // {
    //子进程
// sleep(5);
 //   printf("子进程结束\n");
 //   }
 //  else if(pid>0)
//  {
    //父进程
//    int time2=30;
//    while(time2--)
 //   {
 //     printf("父进程在工作\n");
 //     sleep(1);
 //   }
 //   printf("父进程结束\n");
 // }
 // else{
 //   printf("子进程创建失败\n");
 // }
 

  //孤儿进程：父进程先退出，子进程的父进程就会被改成1号进程（操作系统）来接管。因为进程必定会有终止的时候，终止了就要有释放，父进程没了，操作系统来
  pid_t pid=fork();
  if(pid==0)
  {
    //子进程
    int time=20;
    while(time--)
    {
      printf("我是子进程，我在工作.time:%d \n",time);
      sleep(1);
    }
    printf("子进程退出\n");
  }
  else if (pid>0)
  {
    sleep(5);
    printf("父进程退出\n");
  }
  else{
    printf("子进程创建失败\n");
  }
  return 0;
}
